"""
医学影像AI分析服务系统 v2.0 - 模块化版本
基于Triton推理服务器的优化版本

主要特性:
- 模块化架构设计
- 完全本地化的文件管理
- 统一的Triton推理接口
- 同步/异步双模式API设计
- 智能批量处理和缓存管理
- 增强的性能监控和健康检查

作者: AI Assistant
版本: 2.0.0 (模块化重构版)
"""

from contextlib import asynccontextmanager
from fastapi import FastAPI
from loguru import logger

from core.config import log_configuration
from routes import api_router
from routes.task_routes import _ensure_worker_running

@asynccontextmanager
async def lifespan(app: FastAPI):
    """应用程序生命周期管理"""
    logger.info("启动医学影像AI分析服务系统 v2.0")
    
    # 输出配置信息
    log_configuration()
    
    # 启动任务队列工作线程
    await _ensure_worker_running()
    
    logger.info("任务队列工作线程已启动")
    
    logger.info("系统初始化完成")
    
    yield
    
    logger.info("应用程序关闭完成")


def create_app() -> FastAPI:
    """创建FastAPI应用实例"""
    app = FastAPI(
        title="Medical Image AI Analysis API v2.0",
        description="模块化的Triton驱动医学影像分析系统，支持同步/异步端点",
        version="2.0.0",
        lifespan=lifespan,
        docs_url="/docs",
        redoc_url="/redoc"
    )
    
    # 包含所有API路由
    app.include_router(api_router)
    
    return app

# 创建应用实例
app = create_app()

if __name__ == "__main__":
    """
    开发环境启动入口
    
    生产环境建议使用:
    gunicorn ai_model_api_v2.main:app -w 4 -k uvicorn.workers.UvicornWorker
    """
    import uvicorn
    # 获得本机ip
    
    logger.info("启动开发服务器")
    uvicorn.run(
        "main:app",
        host="0.0.0.0",           # 监听所有网络接口
        port=8000,                # 服务端口
        reload=True,              # 开发模式自动重载
        log_level="info"          # 日志级别
    )